package com.zxw.设计模式.行为型模式.模板方法模式.简单实现;

/**
 * @projectName: util-cloud
 * @package: com.zxw.设计模式.行为型模式.模板方法模式.简单实现
 * @className: AbstractClassTemplate
 * @author: zhangxuewei
 * @description: TODO
 * @date: 2023/10/10 14:33
 * @version: 1.0
 */
public abstract class AbstractClassTemplate {

    /**
     * 通用功能1
     *
     * @param key
     */
    void step1(String key) {
        System.out.println("在模板类中执行------》步骤1");
        if (step2(key))
            step3();
        else
            step4();
        step5();
    }

    boolean step2(String key) {
        System.out.println("在模板类中执行------》步骤2");
        if (key.equals("zxw")) {
            return true;
        }
        return false;
    }

    // 非通用的类需要各自的业务去单独实现
    abstract void step3();

    // 非通用的类需要各自的业务去单独实现
    abstract void step4();

    void step5() {
        System.out.println("在模板类中执行------》步骤5");
    }

    void run(String key) {
        step1(key);
    }
}
